/**
 * @Description: 常用的正则
 * @Author bianpengfei
 * @create 2022/7/11 13:32
 */
const commonRegex = {
  INPUT_FILTER_NUMBER: /[^\d^\.]+/g, // 获取所有的非整数的，一般用于输入框里只能输入整数匹配
  HTML_TAG: /<(\S+?)[^<]*>(.*?)<\/\1>/gi, // 获取所有html标签
  IMG_HTML_TAG: /<(img)[^<]*>(.*?)<\/\1>/gi, // 获取所有的img标签
  HTML_TAG_ATTRS: /(?!=<\w+)(\w*)=[\'\"]?([^\'\"]*)[\'\"][^>|^\s]?/gi, // 获取标签里面所有属性
  IMG_HTML_TAG_SRC_ATTR: /src=[\'\"]?([^\'\"]*)[\'\"]?/i, // 获取所有的img src属性值
  URL: /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/, // 判断是否是合法url
  MOBILE_PHONE: /^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9])\d{8}$/, // 手机号码
  TELEPHONE: /^(\(\d{3,4}-)|\d{3,4}-?\d{7,8}$/, // 座机号码 ("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX)
  EMAIL: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, // 邮箱校验
  SEARCH_URL: /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/, // 浏览器URL地址校验
  CHINA_PHONE: /\d{3}-\d{8}|\d{4}-\d{7}/, // 国内电话号码 （0511-4405222、021-87888822）
  ONLY_CH: /^[\u2E80-\u9FFF]+$/, // 仅匹配中文字符
  ONLY_ENGLISH: /^[A-Za-z]+$/, // 仅匹配英文字符
  ONLY_UP_ENGLISH: /^[A-Z]+$/, // 仅匹配大写字母
  ONLY_LOW_ENGLISH: /^[a-z]+$/, // 仅匹配小写字母
  // 身份证校验
  CARD_ID:
    /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/,
  HK_CARD_ID: /^([A-Z]\d{6,10}(\(\w{1}\))?)$/, // 港澳居民来内地通行证 规则： H/M + 10为或者6位数字 例如：H1234567890
  TW_CARD_ID: /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/, // 台湾居民来大陆通行证
  PASS_PORT: /^([a-zA-z]|[0-9]){5,17}$/, // 护照正则
  WEAK_PASSWORD: /^[a-zA-Z]\w{5,17}$/, // 以字母开头，长度在6~18之间，只能包含字母、数字和下划线
  STRONG_PASSWORD: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/, // 强密码 必须包含大小写字母和数字的组合，不能使用特殊字符，长度在8-10之间
  DATE_FORMAT: /^\d{4}-\d{1,2}-\d{1,2}/, // 例如 2022-08-01 或者 2022-8-1
  // 下方为强日期校验，考虑了平年闰年的日期校验，格式为 'yyyy-mm-dd'
  STRONG_DATE_FORMAT:
    /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/,
  SOCIAL_CODE: /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/, // 社会信用代码
  TENCENT_QQ: /[1-9][0-9]{4,}/, // 腾讯QQ
  POST_CODE: /[1-9]\d{5}(?!\d)/, // 中国邮编
  BLANK_ROW: /\n\s*\r/, // 空白行校验
  REMOVE_CSS_UNIT: /(rem|px|vw|vh|%)$/, // css单位
  REPLACE_FILE_NAME: /^\.\/(.*)\.\w+$/, // 匹配文件 replace(/^\.\/(.*)\.\w+$/, `$1`)
  getFileName(str) {
    return str.replace(this.REPLACE_FILE_NAME, '$1')
  }
}

export default commonRegex
